# coding: utf-8

from sqlalchemy.sql import text

from ..extensions import db
from ..models import BaseModel


class SMSTemplate(BaseModel):
    """
    手机短信模板
    """

    __tablename__ = 'sms_template'

    # 模板名称
    name = db.Column(
        db.String(128, 'utf8mb4_unicode_ci'),
        nullable=False, unique=True,
        server_default=text("''"),
        default='',
    )

    # 模板编码
    code = db.Column(
        db.String(128, 'utf8mb4_unicode_ci'),
        nullable=False, unique=True,
        server_default=text("''"),
        default='',
    )

    # 模板内容
    content = db.Column(
        db.String(1024, 'utf8mb4_unicode_ci'),
        nullable=False,
        server_default=text("''"),
        default='',
    )

    # 模板包含参数
    params = db.Column(
        db.String(1024, 'utf8mb4_unicode_ci'),
        nullable=False,
        server_default=text("''"),
        default='',
    )


class SMSLog(BaseModel):
    """
    短信发送日志
    """

    __tablename__ = 'sms_log'

    filter_dict = {
        'mobile': (),
    }

    # 发送号码
    mobile = db.Column(
        db.String(16, 'utf8mb4_unicode_ci'),
        nullable=False,
        server_default=text("''"),
        default='',
    )

    # 使用模板编码
    template_code = db.Column(
        db.String(128, 'utf8mb4_unicode_ci'),
        nullable=False,
        server_default=text("''"),
        default='',
    )

    # 实际发送内容
    content = db.Column(
        db.String(128, 'utf8mb4_unicode_ci'),
        nullable=False,
        server_default=text("''"),
        default='',
    )

    # 错误信息
    error = db.Column(
        db.String(1024, 'utf8mb4_unicode_ci'),
        nullable=False,
        server_default=text("''"),
        default='',
    )

    # 10:本地已发送 100:短信通道返回成功 200:发送成功 300:禁止发送 400:发送失败
    status = db.Column(
        db.Integer(), nullable=False, server_default='0', default=0)
